/**
 * 初始化管理器
 */

const requireDirectory = require("require-directory");
const Router = require("koa-router");

class InitManger {
  static initCore(app) {
    InitManger.app = app;
    InitManger.initLoadRouters();
    InitManger.loadConfig();
    InitManger.loadHttpException();
  }
  /**
   * 加载配置文件
   * @param {*} path
   */
  static loadConfig(path = "") {
    // 绝对路径
    const configPath = path || process.cwd() + "/config/config.js";
    global.config = require(configPath);
  }
  // 加载全部路由
  static initLoadRouters() {
    // 绝对路径
    const apiDirectory = `${process.cwd()}/app/api`;
    // 自动注册路由
    requireDirectory(module, apiDirectory, {
      visit:whenLoadModule
    });
    function whenLoadModule(obj) {
      if (obj instanceof Router) {
        InitManger.app.use(obj.routes());
      }
    }
  }
  // global全局引入错误提示
  static loadHttpException() {
    global.errs = require("./http-exception");
  }
}

module.exports = InitManger;
